date-util.js ➔ ???   B
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 5

Importance

Changes 4
Bugs 0 Features 0
Metric Value
cc 5
c 4
b 0
f 0
nc 4
dl 0
loc 12
ccs 10
cts 10
cp 1
crap 5
rs 8.8571
nop 3

1 Function

Rating   Name   Duplication   Size   Complexity  
A date-util.js ➔ ... ➔ ??? 0 1 1
1
/**
2
 * Date Util functions
3
 *
4
 * @since 1.0.0
5
 */
6
7 5
const moment = require('moment');
8
9
/**
10
 * Format all dates in the received model
11
 * @param {Array|Date|Object} model
12
 * @param {string} [formatString]
13
 * @returns {*}
14
 */
15 5
exports.formatDates = (model, formatString, utcOffset) => {
16 275
  if (model instanceof Array) {
17 64
    return model.map(item => exports.formatDates(item, formatString, utcOffset));
18 244
  } else if (model instanceof Date || model instanceof moment) {
19 67
    return exports.formatDate(model, formatString, utcOffset);
20 177
  } else if (model instanceof Object) {
21 33
    const result = {};
22 193
    Object.keys(model).forEach((key) => { result[key] = exports.formatDates(model[key], formatString, utcOffset); });
23 33
    return result;
24
  }
25 144
  return model;
26
};
27
28
/**
29
 * Localize date
30
 * @param {Date} date
31
 * @param {number} [utcOffset]
32
 * @returns {moment}
33
 */
34 67
exports.toLocalDate = (date, utcOffset) => moment(date).utcOffset(typeof utcOffset === 'undefined' ? 9 : utcOffset);
35
36
/**
37
 * Format date to string
38
 * @param {Date} date
39
 * @param {string} [formatString]
40
 * @param {number} [utcOffset]
41
 * @returns {string}
42
 */
43
exports.formatDate = (date, formatString, utcOffset) => exports.toLocalDate(date, utcOffset).format(formatString);
44